package cn.tedu.net.collection.collection2;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

//本类用于测试Set接口
public class Test1_Set {
    public static void main(String[] args) {
        Set<String> set=new HashSet();

        set.add("蟹黄包");
        set.add("小笼包");
        set.add("奶黄包");
        set.add("奶黄包");
        set.add("奶黄包");
        set.add(null);
        set.add(null);
        set.add("null");
        set.add("null");
        // set集合中的元素是无序的
        // 不能存储重复的元素
        // 允许存放0-1个null元素
        System.out.println(set);
        //测试常用方法
        System.out.println(set.contains("灌汤包"));
        System.out.println(set.equals("奶黄包"));
        System.out.println(set.hashCode());
        System.out.println(set.isEmpty());
        System.out.println(set.remove(null));
        System.out.println(set.size());
        System.out.println(Arrays.toString(set.toArray()));
        //集合间的操作
        Set<String> set2=new HashSet<>();
        set2.add("小狮子");
        set2.add("小海豚");
        set2.add("小老虎");
        set2.add("小兔子");
        System.out.println(set2);

        System.out.println(set.addAll(set2));
        System.out.println(set.containsAll(set2));
        System.out.println(set.removeAll(set2));
        System.out.println(set.containsAll(set2));

        /*retainAll()是取两个集合的公共部分,谁调用,影响谁*/
        set2.add("花蝴蝶");
        set.add("花蝴蝶");
        System.out.println(set);
        System.out.println(set2);
        System.out.println(set.retainAll(set));
        System.out.println(set2.retainAll(set2));
//        System.out.println(set.retainAll(set2));
        System.out.println(set2.retainAll(set));
        System.out.println(set);
        System.out.println(set2);
        //集合的迭代
        Iterator<String> it=set.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
    }
}
